/*
 * Copyright (C), 2014-2016, org.esaydev
 * FileName: MenuApi.java
 * Author:   jian
 * Date:     2016年3月22日 
 */
package org.easydev.wechat.api;

import org.easydev.wechat.client.dto.menu.MenuCreate;
import org.easydev.wechat.client.dto.menu.MenuDelete;
import org.easydev.wechat.client.dto.menu.MenuGet;
import org.easydev.wechat.client.result.base.BaseWechatResult;
import org.easydev.wechat.common.exception.WechatException;

/**
 * <Description> 微信菜单api<br>
 * 
 * @author jian<br>
 */
public class MenuAPI extends SystemAPI {

    /**
     * Description: 创建菜单<br>
     * 官方说明：<br>
     * 参数 是否必须 说明<br>
     * button 是 一级菜单数组，个数应为1~3个<br>
     * sub_button 否 二级菜单数组，个数应为1~5个<br>
     * type 是 菜单的响应动作类型<br>
     * name 是 菜单标题，不超过16个字节，子菜单不超过40个字节<br>
     * key click等点击类型必须 菜单KEY值，用于消息接口推送，不超过128字节<br>
     * url view类型必须 网页链接，用户点击菜单可打开链接，不超过1024字节<br>
     * media_id media_id类型和view_limited类型必须 调用新增永久素材接口返回的合法media_id<br>
     * 
     * @param mc <br>
     * @return 若result.isSuccess(),结果对象是result.getData(CommonResult.class)<br>
     * @throws WechatException <br>
     */
    public static BaseWechatResult createMenu(MenuCreate mc) throws WechatException {
        return client.getFromWechat(mc);
    }

    /**
     * Description: 删除菜单操作<br>
     * <br>
     * 使用接口创建自定义菜单后，开发者还可使用接口删除当前使用的自定义菜单。<br>
     * 另请注意，在个性化菜单时，调用此接口会删除默认菜单及全部个性化菜单。<br>
     * 
     * @param md <br>
     * @return 若result.isSuccess(),结果对象是result.getData(CommonResult.class)<br>
     * @throws WechatException <br>
     */
    public static BaseWechatResult deleteMenu(MenuDelete md) throws WechatException {
        return client.getFromWechat(md);
    }

    /**
     * Description: 查询菜单<br>
     * <br>
     * 使用接口创建自定义菜单后，开发者还可使用接口查询自定义菜单的结构。<br>
     * 另外请注意，在设置了个性化菜单后，使用本自定义菜单查询接口可以获取默认菜单和全部个性化菜单信息。<br>
     * 
     * @param mg <br>
     * @return 若result.isSuccess(),结果对象是result.getData(MenuGetResult.class)<br>
     * <br>
     * @throws WechatException <br>
     */
    public static BaseWechatResult getMenu(MenuGet mg) throws WechatException {
        return client.getFromWechat(mg);
    }
}
